<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>48.2. Controller Scripts</title>
<link rel="stylesheet" href="dbstyle.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
<link rel="start" href="index.html" title="Programmer's Reference Guide">
<link rel="up" href="zend.view.html" title="Chapter 48. Zend_View">
<link rel="prev" href="zend.view.html" title="Chapter 48. Zend_View">
<link rel="next" href="zend.view.scripts.html" title="48.3. View Scripts">
<link rel="chapter" href="introduction.html" title="Chapter 1. Introduction to Zend Framework">
<link rel="chapter" href="zend.acl.html" title="Chapter 2. Zend_Acl">
<link rel="chapter" href="zend.auth.html" title="Chapter 3. Zend_Auth">
<link rel="chapter" href="zend.cache.html" title="Chapter 4. Zend_Cache">
<link rel="chapter" href="zend.config.html" title="Chapter 5. Zend_Config">
<link rel="chapter" href="zend.console.getopt.html" title="Chapter 6. Zend_Console_Getopt">
<link rel="chapter" href="zend.controller.html" title="Chapter 7. Zend_Controller">
<link rel="chapter" href="zend.currency.html" title="Chapter 8. Zend_Currency">
<link rel="chapter" href="zend.date.html" title="Chapter 9. Zend_Date">
<link rel="chapter" href="zend.db.html" title="Chapter 10. Zend_Db">
<link rel="chapter" href="zend.debug.html" title="Chapter 11. Zend_Debug">
<link rel="chapter" href="zend.dojo.html" title="Chapter 12. Zend_Dojo">
<link rel="chapter" href="zend.dom.html" title="Chapter 13. Zend_Dom">
<link rel="chapter" href="zend.exception.html" title="Chapter 14. Zend_Exception">
<link rel="chapter" href="zend.feed.html" title="Chapter 15. Zend_Feed">
<link rel="chapter" href="zend.filter.html" title="Chapter 16. Zend_Filter">
<link rel="chapter" href="zend.form.html" title="Chapter 17. Zend_Form">
<link rel="chapter" href="zend.gdata.html" title="Chapter 18. Zend_Gdata">
<link rel="chapter" href="zend.http.html" title="Chapter 19. Zend_Http">
<link rel="chapter" href="zend.infocard.html" title="Chapter 20. Zend_InfoCard">
<link rel="chapter" href="zend.json.html" title="Chapter 21. Zend_Json">
<link rel="chapter" href="zend.layout.html" title="Chapter 22. Zend_Layout">
<link rel="chapter" href="zend.ldap.html" title="Chapter 23. Zend_Ldap">
<link rel="chapter" href="zend.loader.html" title="Chapter 24. Zend_Loader">
<link rel="chapter" href="zend.locale.html" title="Chapter 25. Zend_Locale">
<link rel="chapter" href="zend.log.html" title="Chapter 26. Zend_Log">
<link rel="chapter" href="zend.mail.html" title="Chapter 27. Zend_Mail">
<link rel="chapter" href="zend.measure.html" title="Chapter 28. Zend_Measure">
<link rel="chapter" href="zend.memory.html" title="Chapter 29. Zend_Memory">
<link rel="chapter" href="zend.mime.html" title="Chapter 30. Zend_Mime">
<link rel="chapter" href="zend.openid.html" title="Chapter 31. Zend_OpenId">
<link rel="chapter" href="zend.paginator.html" title="Chapter 32. Zend_Paginator">
<link rel="chapter" href="zend.pdf.html" title="Chapter 33. Zend_Pdf">
<link rel="chapter" href="zend.registry.html" title="Chapter 34. Zend_Registry">
<link rel="chapter" href="zend.rest.html" title="Chapter 35. Zend_Rest">
<link rel="chapter" href="zend.search.lucene.html" title="Chapter 36. Zend_Search_Lucene">
<link rel="chapter" href="zend.server.html" title="Chapter 37. Zend_Server">
<link rel="chapter" href="zend.service.html" title="Chapter 38. Zend_Service">
<link rel="chapter" href="zend.session.html" title="Chapter 39. Zend_Session">
<link rel="chapter" href="zend.soap.html" title="Chapter 40. Zend_Soap">
<link rel="chapter" href="zend.test.html" title="Chapter 41. Zend_Test">
<link rel="chapter" href="zend.text.html" title="Chapter 42. Zend_Text">
<link rel="chapter" href="zend.timesync.html" title="Chapter 43. Zend_TimeSync">
<link rel="chapter" href="zend.translate.html" title="Chapter 44. Zend_Translate">
<link rel="chapter" href="zend.uri.html" title="Chapter 45. Zend_Uri">
<link rel="chapter" href="zend.validate.html" title="Chapter 46. Zend_Validate">
<link rel="chapter" href="zend.version.html" title="Chapter 47. Zend_Version">
<link rel="chapter" href="zend.view.html" title="Chapter 48. Zend_View">
<link rel="chapter" href="zend.xmlrpc.html" title="Chapter 49. Zend_XmlRpc">
<link rel="appendix" href="requirements.html" title="Appendix A. Zend Framework Requirements">
<link rel="appendix" href="coding-standard.html" title="Appendix B. Zend Framework Coding Standard for PHP">
<link rel="appendix" href="copyrights.html" title="Appendix C. Copyright Information">
<link rel="index" href="the.index.html" title="Index">
<link rel="subsection" href="zend.view.controllers.html#zend.view.controllers.assign" title="48.2.1. Assigning Variables">
<link rel="subsection" href="zend.view.controllers.html#zend.view.controllers.render" title="48.2.2. Rendering a View Script">
<link rel="subsection" href="zend.view.controllers.html#zend.view.controllers.script-paths" title="48.2.3. View Script Paths">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader"><table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">48.2. Controller Scripts</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="zend.view.html">Prev</a> </td>
<th width="60%" align="center">Chapter 48. Zend_View</th>
<td width="20%" align="right"> <a accesskey="n" href="zend.view.scripts.html">Next</a>
</td>
</tr>
</table></div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="zend.view.controllers"></a>48.2. Controller Scripts</h2></div></div></div>
<p>
        The controller is where you instantiate and configure Zend_View.
        You then assign variables to the view, and tell the view to
        render output using a particular script.
    </p>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="zend.view.controllers.assign"></a>48.2.1. Assigning Variables</h3></div></div></div>
<p>
            Your controller script should assign necessary variables to the view
            before it hands over control to the view script.  Normally, you
            can do assignments one at a time by assigning to property names
            of the view instance:
        </p>
<pre class="programlisting">&lt;?php
$view = new Zend_View();
$view-&gt;a = "Hay";
$view-&gt;b = "Bee";
$view-&gt;c = "Sea";
        </pre>
<p>
            However, this can be tedious when you have already collected the
            values to be assigned into an array or object.
        </p>
<p>
            The assign() method lets you assign from an array or object "in
            bulk."  The following examples have the same effect as the above
            one-by-one property assignments.
        </p>
<pre class="programlisting">&lt;?php
$view = new Zend_View();

// assign an array of key-value pairs, where the
// key is the variable name, and the value is
// the assigned value.
$array = array(
    'a' =&gt; "Hay",
    'b' =&gt; "Bee",
    'c' =&gt; "Sea",
);
$view-&gt;assign($array);

// do the same with an object's public properties;
// note how we cast it to an array when assigning.
$obj = new StdClass;
$obj-&gt;a = "Hay";
$obj-&gt;b = "Bee";
$obj-&gt;c = "Sea";
$view-&gt;assign((array) $obj);
        </pre>
<p>
            Alternatively, you can use the assign method to assign
            one-by-one by passing a string variable name, and then the
            variable value.
        </p>
<pre class="programlisting">&lt;?php
$view = new Zend_View();
$view-&gt;assign('a', "Hay");
$view-&gt;assign('b', "Bee");
$view-&gt;assign('c', "Sea");
        </pre>
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="zend.view.controllers.render"></a>48.2.2. Rendering a View Script</h3></div></div></div>
<p>
            Once you have assigned all needed variables, the controller
            should tell Zend_View to render a particular view script.
            Do so by calling the render() method.  Note that the method will
            return the rendered view, not print it, so you need to print or
            echo it yourself at the appropriate time.
        </p>
<pre class="programlisting">&lt;?php
$view = new Zend_View();
$view-&gt;a = "Hay";
$view-&gt;b = "Bee";
$view-&gt;c = "Sea";
echo $view-&gt;render('someView.php');
        </pre>
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="zend.view.controllers.script-paths"></a>48.2.3. View Script Paths</h3></div></div></div>
<p>
            By default, Zend_View expects your view scripts to be relative to
            your calling script.  For example, if your controller script is at
            "/path/to/app/controllers" and it calls
            $view-&gt;render('someView.php'), Zend_View will look for
            "/path/to/app/controllers/someView.php".
        </p>
<p>
            Obviously, your view scripts are probably located elsewhere.  To
            tell Zend_View where it should look for view scripts, use the
            setScriptPath() method.
        </p>
<pre class="programlisting">&lt;?php
$view = new Zend_View();
$view-&gt;setScriptPath('/path/to/app/views');
        </pre>
<p>
            Now when you call $view-&gt;render('someView.php'), it will look
            for "/path/to/app/views/someView.php".
        </p>
<p>
            In fact, you can "stack" paths using the addScriptPath()
            method. As you add paths to the stack, Zend_View will look
            at the most-recently-added path for the requested view
            script.  This allows you override default views with custom
            views so that you may create custom "themes" or "skins" for
            some views, while leaving others alone.
        </p>
<pre class="programlisting">&lt;?php
$view = new Zend_View();
$view-&gt;addScriptPath('/path/to/app/views');
$view-&gt;addScriptPath('/path/to/custom/');

// now when you call $view-&gt;render('booklist.php'), Zend_View will
// look first for "/path/to/custom/booklist.php", then for
// "/path/to/app/views/booklist.php", and finally in the current
// directory for "booklist.php".
        </pre>
</div>
</div>
<div class="navfooter"><table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="zend.view.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="zend.view.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="zend.view.scripts.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Chapter 48. Zend_View </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> 48.3. View Scripts</td>
</tr>
</table></div>
<div class="revinfo"></div>
</body>
</html>
